package com.chixing.day16_io.homework;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Product {
    private int proId;

    public int getProId() {
        return proId;
    }

    public void setProId(int proId) {
        this.proId = proId;
    }


// 通过反射 判断proId 是否有get,set

    public static void main(String[] args) {
        boolean result1 = hasGetMethod(Product.class, "proId");
        System.out.println(result1);
        boolean result2 = hasSetMethod(Product.class, "proId");
    }

    public static boolean hasGetMethod(Class clazz, String fieldName) {
        /*
           1.获得字段 proId 的数据类型 int
           2. Product 中找出 方法名为 "getProId" ,并且 参数列表是空的 null , 并且 返回值是int
              若存在这样的方法结构，说明对应的get方法是存在的
              否则就是不存在
        */

        Method[] methods = clazz.getDeclaredMethods();
        for (Method method : methods) {
            Field[] fields = clazz.getDeclaredFields();
            Class<?>[] paramTypes = method.getParameterTypes();
            String methodName = method.getName();
            for (Field ff:fields) {
                fieldName = String.valueOf(ff.getType());
            }
            if (methodName.equals("getProId") && fieldName.equals("int")) {
                for (Class<?> paramType : paramTypes) {
                    if (paramType == null) {
                        System.out.println("get存在");
                    }


                }
                System.out.println("get不存在");
            }
        }

        return false;
    }

    public static boolean hasSetMethod(Class clazz, String fieldName) {
          /*
           1.获得字段 proId 的数据类型 int
           2. Product 中找出 方法名为 "setProId" ,并且 参数列表的数据类型 int, 并且 返回值是 void
              若存在这样的方法结构，说明对应的set方法是存在的
              否则就是不存在
        */

    return false;
    }


}
